import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;

/**
 * Funciona para os testes do site + testes extras.
 * 
 *
 */
public class Main307 {

	public static void main(String[] args) {
		
		try{
		
		Scanner sc = new Scanner(System.in);

		while (sc.hasNextLine()) {

			List<Integer> troncos = new LinkedList<Integer>();

			//quantidade de troncos nao importa
			if(Integer.parseInt(sc.nextLine()) == 0){
				break;
			}
			
			String[] entrada = sc.nextLine().split(" ");
			
			for (int i = 0; i < entrada.length; i++) {
				 troncos.add(Integer.valueOf(entrada[i]));
			}
			
			Collections.sort(troncos);
			
			int tamanhoMaiorTronco = troncos.get(troncos.size() - 1);
			
			int somatorioDosTamanhosDosTroncos = 0;
			for (int i = 0; i < troncos.size(); i++) {
				somatorioDosTamanhosDosTroncos += troncos.get(i);
			}
			
			int maiorTroncoAtual;
			
			boolean deuCerto = true;
			for(maiorTroncoAtual = tamanhoMaiorTronco; maiorTroncoAtual <= somatorioDosTamanhosDosTroncos; maiorTroncoAtual++){
				
				List<Integer> troncosClone = new ArrayList<Integer>(troncos);
				
				if(somatorioDosTamanhosDosTroncos % maiorTroncoAtual == 0) {
					
					int quantidadeDeTroncos = somatorioDosTamanhosDosTroncos / maiorTroncoAtual;
					int troncoASerMontado = maiorTroncoAtual;
					
					for (int i = 0; i < quantidadeDeTroncos; i++) {
						
						for (int j = troncosClone.size() - 1; j >= 0; j--) {
							
							int troncoAtual = troncosClone.get(j);
							
							if((troncoAtual <= troncoASerMontado) && ((troncoAtual - troncoASerMontado) <= 0)) {
								troncoASerMontado -= troncosClone.get(j);
								troncosClone.remove(j);
							}
							
							//nao deu certo
							if(j == 0 && troncoASerMontado != 0) {
								deuCerto = false;
								break;
							}
							
							
						}
						
					}
					
					//deu certo
					if(deuCerto) {
						System.out.println(maiorTroncoAtual);
						break;
					}
				}
			}
			
			if(!deuCerto) {
				//essa subtracao eh feita para reverter o ultimo incremento do for
				System.out.println(maiorTroncoAtual - 1);
			}
		}
		}catch (Exception ex) {
			
		}
	}
}
